package br.here.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

	private static final SessionFactory sessionFactory = buildSessionFactory();
	
	private static SessionFactory buildSessionFactory(){
		try{
			return new AnnotationConfiguration().configure().buildSessionFactory();
		} catch (Throwable ex){
			System.err.println("------ Initial SessionFactory creation failed. "+ex);
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	public static SessionFactory getSessionFactory(){
		if (sessionFactory == null){
			return buildSessionFactory();
		}else{
			return sessionFactory;
		}
	}
	
	public static Session getCurrentSession(){
		if(!HibernateUtil.getSessionFactory().getCurrentSession().isOpen()){
			HibernateUtil.getSessionFactory().openSession();
		}
	return HibernateUtil.getSessionFactory().getCurrentSession();
	}
}
